#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
//int main()
int main(int argc,char*argv[])
{
   //dup2的使用
    if(argc!=2)//在命令行要输入两个参数
    {
      return 2;
    }
   int fd=open("log.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
   if(fd<0)
   {
     perror("open");
     return 1;
   }
   dup2(fd,1);//标准输出重定向到log.txt中
   fprintf(stdout,"%s\n",argv[1]);//在log.txt中打印第二个参数
    close(fd);



















     //输出重定向
   //close(1);
   //int fd=open("log.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
   //  if(fd<0)
   //{
   //  perror("open");
   //  return 1;
   //}
   ////printf("fd:%d\n",fd);
   //fprintf(stdout,"you can see me\n");
   //fputs("hello puts\n",stdout);
   //const char*s="hello fwrite\n";
   //fwrite(s,strlen(s),1,stdout);
   //// close(fd);
   //return 0;
   


 //追加重定向
 //close(1);
 //int fd=open("log.txt",O_WRONLY|O_CREAT|O_APPEND,0666);
 //if(fd<0)
 //{
 //  perror("open");
 //  return 1;
 //}
 //fprintf(stdout,"you can see me\n");
 //printf("fd:%d\n",fd);
 //char buf[64];
 //fgets(buf,sizeof(buf),stdin);
 //printf("%s\n",buf);
 //return 0;
    


















 //输入重定向
 //close(0);
 //int fd=open("log.txt",O_RDWR);
 //if(fd<0)
 //{
 //perror("open\n");
 //return 1;
 //}
 //char buf[64];
 //printf("fd:%d\n",fd);
 //while(fgets(buf,sizeof(buf),stdin))//从标准输入读重定向到从log.txt读
 //{
 //
 //printf("%s",buf);
 //} 

//  return 0;
}
